main() {
  // 1. 创建对象
  Payment p1 = new Alipay();
  // 2. 调用方法
  p1.pay(100);
  // 微信支付
  Payment p2 = new WechatPay();
  p2.pay(200);
  // 银联支付
  Payment p3 = new UnionPay();
  p3.pay(300);
  // QQ支付
  Payment p4 = new QQPay();
  p4.pay(400);
}

// 抽象类的定义一个标准，约束类
// 抽象类 - 里面有支付方法
// abstract class Payment {
//   // 抽象方法，没有方法体，需要在子类中实现
//   void pay(double amount);
// }
abstract interface class Payment {
  // 抽象方法，没有方法体，需要在子类中实现
  void pay(double amount);
}

// 实现类
class Alipay implements Payment {
  @override
  void pay(double amount) {
    print('支付宝支付了$amount元');
  }
}

// 实现类
class WechatPay implements Payment {
  @override
  void pay(double amount) {
    print('微信支付了$amount元');
  }
}

// 实现类
class UnionPay implements Payment {
  @override
  void pay(double amount) {
    print('银联支付了$amount元');
  }
}

// 实现类
class QQPay implements Payment {
  @override
  void pay(double amount) {
    print('QQ支付了$amount元');
  }
}

